﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Portal.Web.Utility;
using Portal.Utility;
using Portal.Exam.Bussiness;
using Portal.Exam.Model;

namespace Portal.Exam.Render
{
    public class UpdateFreeText
    {
        [AjaxPro.AjaxMethod]
        public string GetHtml(string SiteId, string QuestionId)
        {
            QuestionCls QuestionCls = new QuestionBll().CreateModel(SiteId, QuestionId);
            if (QuestionCls == null)
            {
                return "Truy cập bị cấm đường dẫn không hợp lệ";
            }


            string[] Answer = new string[]{
                    "Đúng","Sai"
                };
            string[] AnswerCode = new string[]{
                    "Yes","No"
                };



            string MonthiId = (string)WebEnvironments.Request(SiteId, "MonthiId");
            string Type = (string)WebEnvironments.Request(SiteId, "Type");



            string RetHtml =
                             "      <table>" +
                             "          <tr>" +
                             "              <td class=cssUpdateBestAnsItemCol1>Câu hỏi:</td>" +
                             "              <td><textarea class=cssTextBoxQuestion id=txtQuestion>" + QuestionCls.Title + "</textarea></td>" +
                             "          </tr>" +
                             "          <tr>" +
                             "              <td>Điểm:</td>" +
                             "              <td><input id=txtPoint value=\"" + QuestionCls.MaxPoint + "\"></td>" +
                             "          </tr>" +
                             "          <tr>" +
                             "              <td>Thời gian(giây):</td>" +
                             "              <td><input id=txtSecondTime value=\"" + QuestionCls.SecondTime + "\"></td>" +
                             "          </tr>" +
                             "          <tr>" +
                             "              <td class=cssUpdateBestAnsItemCol1>Gợi ý chấm điểm:</td>" +
                             "              <td><textarea class=cssTextBoxQuestion id=txtAnswerTip>" + QuestionCls.AnswerTip + "</textarea></td>" +
                             "          </tr>" +
                             "          <tr>" +
                             "              <td>Câu hỏi trí nhớ:</td>" +
                             "              <td><input type=checkbox id=chkIsMemory " + (QuestionCls.IsMemory == 1 ? "CHECKED" : "") + " ></td>" +
                             "          </tr>" +
                             "          <tr>" +
                             "              <td>Thời gian ẩn:</td>" +
                             "              <td><input id=txtSecondHidden value=\"" + QuestionCls.SecondHidden + "\"></td>" +
                             "          </tr>" +

                             "         <tr>" +
                             "             <td></td>" +
                             "             <td><div class=cssFunctionUpdateBestAns><input type=button  onclick=javascript:ClientSaveUpdateFreeTextQuestion('" + QuestionId + "'); value=\"Ghi lại\"><input type=button  onclick=\"javascript:window.history.back(-1);\" value=\"Quay lại\"><input type=button  onclick=javascript:window.close(); value=\"Danh sách\"></div></td>" +
                             "         </tr>" +
                             "</table>";


            string previewUrl = "PreviewOneQuestion.aspx?QuestionId="+QuestionId;
            return RetHtml;
        }

        public string Draw(string SiteId)
        {
            try
            {

                WebSessionUtility.CheckSessionTimeOut(); 
                string QuestionId = System.Web.HttpContext.Current.Request["QuestionId"];

                string RetHtml = "<div id=divUpdateBestAnsContent>"+ GetHtml(SiteId, QuestionId)+"</div>";

                return RetHtml;
            }
            catch (Exception ex)
            {
                return "ERROR: " + ex.Message.ToString();
            }
        }

        [AjaxPro.AjaxMethod]
        public string ServerSideUpdateFreeText(string SiteId, string QuestionId, string Title, string MaxPoint, string SecondTime, string IsMemory, string SecondHidden)
        {
            try
            {
                WebSessionUtility.CheckSessionTimeOut(); 
                if (Title.Trim().Length == 0) throw new Exception("Nhập tên nhóm vai trò");
                if (FunctionUtilities.checkInteger(MaxPoint) == false) throw new Exception("Dữ liệu điểm nhập không hợp lệ! Phải nhập kiểu số!");
                new QuestionBll().UpdateQuestionFreeText(null,SiteId, QuestionId, Title, int.Parse(MaxPoint),int.Parse(SecondTime),bool.Parse(IsMemory),int.Parse(SecondHidden),1);
                return "Cập nhật thành công!";
            }
            catch (Exception ex)
            {
                return "ERROR: " + ex.Message.ToString();
            }
        }



        [AjaxPro.AjaxMethod]
        public string ServerSideAddNewAnswerItem(
            string SiteId,
            string QuestionId,
            string NewAnswerItem)
        {
            try
            {
                WebSessionUtility.CheckSessionTimeOut(); 
                if (NewAnswerItem.Trim().Length == 0) throw new Exception("Chưa nhập phương án trả lời mới");
                new QuestionBll().AddNewAnswerItem(null,SiteId, QuestionId, NewAnswerItem);
                return "Thêm mới phương án trả lời thành công!";
            }
            catch (Exception ex)
            {
                return "ERROR: " + ex.Message.ToString();
            }
        }

        [AjaxPro.AjaxMethod]
        public string GetConfirmDeleteMsg()
        {
            return "Bạn đã chắc chắn xóa chưa?";
        }

        [AjaxPro.AjaxMethod]
        public string GetConfirmSetRightAnsItem(string SiteId, string AnswerId)
        {
            try
            {
                AnswerCls AnswerCls = new QuestionBll().CreateModelAnswer(SiteId, AnswerId);
                string retValue = "Bạn đã chắc chắn đặt câu trả lời [RightAnsText] là câu ĐÚNG chưa?";
                retValue = retValue.Replace("RightAnsText", AnswerCls.AnswerTextFirst);
                return retValue;
            }
            catch (Exception ex)
            {
                return ex.Message.ToString();
            }
        }

        [AjaxPro.AjaxMethod]
        public string GetConfirmSetWrongAnsItem(string SiteId, string AnswerId)
        {
            try
            {
                AnswerCls AnswerCls = new QuestionBll().CreateModelAnswer(SiteId, AnswerId);
                string retValue = "Bạn đã chắc chắn đặt câu trả lời [WrongAnsText] là câu SAI chưa?";
                retValue = retValue.Replace("WrongAnsText", AnswerCls.AnswerTextFirst);
                return retValue;
            }
            catch (Exception ex)
            {
                return ex.Message.ToString();
            }
        }

        [AjaxPro.AjaxMethod]
        public string ServerSideDeleteAnswer(
            string SiteId,
            string AnswerId)
        {
            try
            {
                WebSessionUtility.CheckSessionTimeOut(); 
                new QuestionBll().DeleteAnswerItem(null, SiteId, AnswerId);
                return "Xóa phương án trả lời thành công!";
            }
            catch (Exception ex)
            {
                return "ERROR: " + ex.Message.ToString();
            }
        }

        [AjaxPro.AjaxMethod]
        public string GetUpdateAnsItemText(
            string QuestionId,
            string AnswerId)
        {
            try
            {
                WebSessionUtility.CheckSessionTimeOut(); 
                
                return "EditAnswerItem.aspx?QuestionId="+QuestionId+"&AnswerId="+AnswerId;
            }
            catch (Exception ex)
            {
                return "ERROR: " + ex.Message.ToString();
            }
        }

        [AjaxPro.AjaxMethod]
        public string ServerSideSaveAnsItem(string SiteId, string AnswerId,string AnsText)
        {
            try
            {
                WebSessionUtility.CheckSessionTimeOut(); 
                if (AnsText.Trim().Length == 0) throw new Exception("Chưa nhập nội dung phương án trả lời mới!");
                new QuestionBll().SaveAnswerItem(null,SiteId, AnswerId, AnsText);
                return "Cập nhật nội dung phương án trả lời thành công!";
            }
            catch (Exception ex)
            {
                return "ERROR: " + ex.Message.ToString();
            }
        }

       
        [AjaxPro.AjaxMethod]
        public string ServerSideSaveQuestion(string SiteId, string QuestionId, string Title, string Question, int MaxPoint, string AnswerTip,string SecondTime,bool IsMemory,string SecondHidden)
        {
            try
            {
                WebSessionUtility.CheckSessionTimeOut();
                if (Title.Trim().Length == 0)
                {
                    throw new Exception("Chưa nhập nội dung câu hỏi!");
                }
                new QuestionBll().SaveQuestion(null, SiteId, QuestionId, Title, Question, MaxPoint, AnswerTip, int.Parse(SecondTime), IsMemory, int.Parse(SecondHidden),1);
                return "Cập nhật câu hỏi tự do hành công!";
            }
            catch (Exception ex)
            {
                return "ERROR: " + ex.Message.ToString();
            }
        } 
    }
}